package model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import enums.PrioridadeChamado;
import enums.StatusChamado;

@Entity
public class Chamado{
	
	@Id
	@GeneratedValue
	private Long id;
		
	private String codigo;
	
	@Temporal(TemporalType.DATE)
	@Column( name="data_solicitacao")
	private Date dataSolicitacao;
	
	@Temporal(TemporalType.DATE)
	@Column(name="data_conclusao")
	private Date dataConclusao;
		
	@OneToOne
	private ProblemaChamado problema; /*Tipo de Problema Ex.: Nao Liga, Nao Imprime, Sem Internet, Outros,  */
	
	@OneToOne
	private Equipamento equipamento;
	
	private String descricao;
	private PrioridadeChamado prioridade; /*Tipo Enum*/
	private String solicitante;
	private StatusChamado status;  /*Tipo Enum*/
	
	@OneToOne
	private Usuario responsavelAbertura;
	
	@OneToOne
	private Usuario tecnicoExecutor;
	
	private String solucao;
	private String observacao;
	
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getCodigo() {
		return codigo;
	}
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	public Date getDataSolicitacao() {
		return dataSolicitacao;
	}
	public void setDataSolicitacao(Date dataSolicitacao) {
		this.dataSolicitacao = dataSolicitacao;
	}
	public Date getDataConclusao() {
		return dataConclusao;
	}
	public void setDataConclusao(Date dataConclusao) {
		this.dataConclusao = dataConclusao;
	}

	public ProblemaChamado getProblema() {
		return problema;
	}
	public void setProblema(ProblemaChamado problema) {
		this.problema = problema;
	}
	public Equipamento getEquipamento() {
		return equipamento;
	}
	public void setEquipamento(Equipamento equipamento) {
		this.equipamento = equipamento;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public PrioridadeChamado getPrioridade() {
		return prioridade;
	}
	public void setPrioridade(PrioridadeChamado prioridade) {
		this.prioridade = prioridade;
	}
	public String getSolicitante() {
		return solicitante;
	}
	public void setSolicitante(String solicitante) {
		this.solicitante = solicitante;
	}
	public StatusChamado getStatus() {
		return status;
	}
	public void setStatus(StatusChamado status) {
		this.status = status;
	}
	public Usuario getResponsavelAbertura() {
		return responsavelAbertura;
	}
	public void setResponsavelAbertura(Usuario responsavelAbertura) {
		this.responsavelAbertura = responsavelAbertura;
	}
	public Usuario getTecnicoExecutor() {
		return tecnicoExecutor;
	}
	public void setTecnicoExecutor(Usuario tecnicoExecutor) {
		this.tecnicoExecutor = tecnicoExecutor;
	}
	public String getSolucao() {
		return solucao;
	}
	public void setSolucao(String solucao) {
		this.solucao = solucao;
	}
	public String getObservacao() {
		return observacao;
	}
	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}
}
